In most computer systems, when a new peripheral device (e.g., a printer, disk, tape drive, terminal or input/output device) is attached to the computer system, a device driver must be developed and then loaded into the operating system, in order to permit use of the peripheral device. Also, if a device driver is modified or replaced, a new device driver is loaded in a similar way to replace an old device driver. In typical computer systems, after a device driver is linked into an operating system, the computer must be rebooted, i.e., shut down and restarted, with the new operating system.
Shutting down and restarting a computer system is not generally desirable. In particular, in systems which are designed to be fault-tolerant such as banking systems, long down-time is not merely undesirable, it may actually cause loss of data and business. Unacceptable down-time is frequently experienced by customers when they develop and test drivers for newly acquired peripheral devices, such as new printers and new disk drives. To avoid these problems, customers often require their computer suppliers to develop and test new drivers. However, most computer suppliers, whose typical primary focus is product development, want to avoid diverting their technical resources away from their primary business goals. They do not see the development of drivers as being a cost effective contribution to their business.
Development of drivers also often requires access to the source code for the operating system. Many computer manufacturers, however, do not wish to distribute the source code of their operating systems, in order to protect proprietary information for business reasons and also to protect system integrity and security of systems in use.